#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include<QObject>
#include<QTimer>
#include<QString>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <QDebug>
#include<QFile>

#include <pthread.h>
#include<stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/sem.h>
#include <unistd.h>
#include <string>
#include<QThread>
#include"Dac.h"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow;

class   MyThread : public QThread
{
    Q_OBJECT
public:
    MyThread(MainWindow *_t)
    {
        this->t = _t;
        //this->start();
    }
    ~MyThread()
    {

    }
    void  run();
private:
  MainWindow *t;
};


class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    Q_INVOKABLE void setCapture(bool str);
    QString readADC();//开文件读取数据
    Q_INVOKABLE void setDac();
    void  share_init();
    void  test();//未开线程前显示共享内存内容
    void  M4_share();
    void  Readfile();
private:
    Ui::MainWindow  *ui;
    QTimer *timer;
    QString adcdata;
    key_t   key;//共享内存健值
    int     shmid;//共享内存
    char    *ptext;//用于指向共享内存的指针
    int     lock;
    int     m_fd,num;
    int     sign = 0;   //共享内存是否初始化的标志
    class QString adcData();
    Q_PROPERTY(QString adcData READ adcData NOTIFY adcDataChanged)
    MyThread *mythread;
    Dac    DAC;
public slots:
   void  getAdcData();//界面显示数据
   void  showQstring();//开线程后显示共享内存内容
   void  sendData();
   void  readM4();
signals:
    void adcDataChanged();
    void signal_showQstring();//线程发送数据
    void readM4_signal();
};
#endif // MAINWINDOW_H
